package bintree.leetcode;

/**
 * @Author: yuisama
 * @Date: 2022/9/17 12:38
 * @Description:修剪二叉树
 */
public class Num669_TrimBST {
    public TreeNode trimBST(TreeNode root, int low, int high) {
        // 边界
        if (root == null) {
            return null;
        }
        // 处理当前树根就是待删除的节点
        if (root.val < low) {
            // 将右树树根传入继续处理，返回处理后的返回值
            // 此处不能直接返回root.right,继续递归处理
            // 因为右树树根有可能继续需要处理
            return trimBST(root.right,low,high);
        }
        if (root.val > high) {
            return trimBST(root.left,low,high);
        }
        // 当前树根不是需要处理的节点
        root.left = trimBST(root.left,low,high);
        root.right = trimBST(root.right,low,high);
        return root;
    }
}
